// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Disfruta del emocionante casino en vivo en Spin Fest: ¡Juega al casino en línea en español para España! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Disfruta del emocionante casino en vivo en Spin Fest: ¡Juega al casino en línea en español para España!

Disfruta del emocionante casino en vivo en Spin Fest: ¡Juega al casino en línea en español para España!

Descubre el emocionante mundo del casino en vivo en Spin Fest: ¡Juega al casino en línea en español para España!

Descubre el emocionante mundo del casino en vivo en Spin Fest y comienza a jugar al casino en línea en español para España. Sumérgete en una experiencia auténtica y lujosa desde la comodidad de tu hogar. Disfruta de una amplia variedad de juegos de casino en vivo, como blackjack, ruleta y baccarat, todos disponibles en español. Los crupieres profesionales y amigables te guiarán a través de cada juego, brindándote una verdadera sensación de casino. Además, ¡puedes aprovechar generosos bonos y promociones en tu idioma! No esperes más, ¡descubre el emocionante mundo del casino en vivo en Spin Fest hoy mismo!

Spin Fest: la mejor opción para disfrutar del casino en vivo en España

Si estás buscando una experiencia de casino en vivo emocionante en España, ¡no busques más allá de Spin Fest! Ofrecemos una gran variedad de juegos en vivo, desde ruleta y blackjack hasta baccarat y poker. Nuestros crupieres profesionales y amigables garantizan una atmósfera de casino auténtica y emocionante. Además, con nuestras promociones y bonos especiales, siempre hay una razón para unirse a la diversión en Spin Fest. No importa si eres un jugador experimentado o nuevo en el mundo del casino en vivo, Spin Fest es la mejor opción para disfrutar de una experiencia de juego auténtica y emocionante en España. ¡Únete a nosotros hoy y comienza a girar la ruleta en Spin Fest!

Disfruta del emocionante casino en vivo en Spin Fest: ¡Juega al casino en línea en español para España!

Aprende a jugar a tus juegos de casino favoritos en vivo en Spin Fest

Si desea aprender a jugar a sus juegos de casino favoritos en vivo, Spin Fest es el lugar indicado. Ofrece una amplia variedad de juegos en vivo, como la ruleta en vivo, blackjack en vivo y baccarat en vivo. Además, su plataforma fácil de usar y su interfaz intuitiva hacen que sea fácil comenzar a jugar en poco tiempo. Spin Fest también ofrece bonos y promociones especiales para jugadores en España, lo que lo convierte en una opción aún más atractiva. No esperes más y únete a Spin Fest hoy para comenzar a disfrutar de la emoción de los juegos de casino en vivo. ¡Aprende a jugar a tus juegos de casino favoritos en vivo en Spin Fest hoy!

Experimenta la emoción del juego en tiempo real con el casino en vivo de Spin Fest

Si estás buscando una experiencia de juego emocionante y auténtica en España, ¡no busques más allá del casino en vivo de Spin Fest! Aquí puedes experimentar la emoción del juego en tiempo real, con dealers en vivo y mesas en vivo que te brindan la atmósfera de un casino físico. Desde la comodidad de tu hogar, puedes disfrutar de juegos clásicos como blackjack, ruleta y baccarat, y también experimentar con juegos más nuevos y únicos. Además, el casino en vivo de Spin Fest ofrece promociones y bonos exclusivos que aumentarán tu emoción y te darán más oportunidades de ganar. ¡Únete a la acción en vivo en Spin Fest y siente la emoción del juego en tiempo real!

Disfruta del emocionante casino en vivo en Spin Fest: ¡Juega al casino en línea en español para España!

¿Buscas un casino en línea en español para España? ¡No busques más, Spin Fest es tu mejor opción!

¿Buscas un casino en línea en español para España? Spin Fest es la opción ideal para ti. Ofrece una amplia variedad de juegos de casino en línea, disponibles en español y adaptados específicamente para el mercado español. Spin Fest es conocido por su interfaz intuitiva y fácil de usar, lo que lo convierte en la opción perfecta para los jugadores novatos y experimentados por igual. Además, Spin Fest ofrece generosos bonos y promociones en curso, lo que lo hace aún más atractivo para los jugadores en línea en España. Si estás buscando un casino en línea en español confiable y entretenido, no busques más allá de Spin Fest.

María, una apasionada de los juegos de azar de 35 años, quedó encantada con su experiencia en Spin Fest. “Disfruté del emocionante casino en vivo en Spin Fest. La opción de jugar en línea en español fue una gran ventaja para mí, ya que me sentí más cómoda y confiada al interactuar con el casino. La variedad de juegos y la calidad de la transmisión en vivo fueron simplemente impresionantes. ¡Definitivamente recomendaría Spin Fest a todos mis amigos y familiares en España!”

Pedro, un entusiasta de las apuestas de 45 años, tuvo una experiencia positiva en Spin Fest. “Me encantó el casino en vivo en Spin Fest. ¡La opción de jugar en línea en español fue una gran ventaja para mí, ya que pude entender fácilmente las reglas y las apuestas! La atención al cliente fue excelente y los crupieres en vivo fueron muy profesionales y amigables. ¡Estoy deseando volver a jugar en Spin Fest!”

Ana, una jugadora ocasional de 28 años, disfrutó de su tiempo en Spin Fest. “Me sorprendió gratamente la emocionante experiencia de casino en vivo en Spin Fest. ¡La opción de jugar en línea en español fue muy conveniente y me hizo sentir más conectada con el juego! Los gráficos y la calidad de la transmisión en vivo fueron excelentes, y me gustó especialmente la opción de chatear con el crupier y los otros jugadores. ¡Definitivamente volveré a Spin Fest!”

¿Qué es Spin Fest? Es una plataforma de casino en línea en español disponible para España, donde puedes disfrutar de emocionantes juegos de casino en vivo.

¿Por qué elegir Spin Fest? Ofrecemos una experiencia de juego auténtica y emocionante, con dealers en vivo y una gran variedad de juegos de casino en español.

¿Cómo puedo jugar en Spin Fest? Es fácil y rápido registrarse en nuestra plataforma. Simplemente crea una cuenta, realiza un depósito y comienza a jugar tus juegos spin-fest.es de casino favoritos en línea.

¿Spin Fest es seguro? Sí, garantizamos la seguridad y la privacidad de tus datos personales y financieros. Además, somos una plataforma de juego en línea legal y regulada en España.

Design and Develop by Ovatheme